package com.toe.common.utils;

import java.security.GeneralSecurityException;
import java.util.Properties;
import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class EmailUtil {
    //授权码
    static String QQSecurity = "tcdhhbtplwdejfhd";
    static String QQHost = "smtp.qq.com";
    public static String sendMessage(String email,String title,String contentText){
        try {
            // 1.创建一个配置文件并保存
            Properties properties = new Properties();
            // 使用的协议（JavaMail规范要求）
            properties.setProperty("mail.transport.protocol", "smtp");
            // 使用的的邮箱类型的服务器地址
            // smtp.qq.com QQ邮箱服务器地址
            // smtp.126.com 网页邮箱服务器地址
            properties.setProperty("mail.smtp.host", QQHost);
            // 需要请求认证
            properties.setProperty("mail.smtp.auth", "true");

            // 关于QQ邮箱，还要设置SSL加密，加上以下代码即可
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.smtp.ssl.socketFactory", sf);

            // 2.创建会话对象，相当于打开了邮箱
            //Session session = Session.getInstance(properties);

            // QQ邮箱所需要的有授权码的session对象
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    //发件人邮件用户名、授权码
                    return new PasswordAuthentication("1148925124@qq.com", QQSecurity);
                }
            });

            // 设置为debug模式, 可以查看详细的发送 log
            session.setDebug(true);
            // 3.根据 Session 获取邮件传输对象,相当于点击了写信
            Transport transport = session.getTransport();
            //4.使用邮箱的用户名和授权码连上邮件服务器
            String account = "1148925124@qq.com";
            transport.connect(QQHost, account, QQSecurity);
            //5.创建邮箱
            MimeMessage message = new MimeMessage(session);
            //指定发送人的邮箱
            message.setFrom(new InternetAddress(account));
            //指定收件人的邮箱
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
            //设置邮件标题
            message.setSubject(title);
//            //设置图片
//            MimeBodyPart img = new MimeBodyPart();
//
//            //图片地址
//            DataHandler handler = new DataHandler(new FileDataSource("src/resources/sis.jpg"));
//            //添加图片
//            img.setDataHandler(handler);
//            //设置图片ID
//            img.setContentID("img.jpg");

            // 准备正文数据
            MimeBodyPart text = new MimeBodyPart();
            text.setContent(contentText, "text/html;charset=UTF-8");

            //设置关系，拼接邮件内容
            MimeMultipart mm = new MimeMultipart();
            mm.addBodyPart(text);
//            mm.addBodyPart(img);
            mm.setSubType("related");


            //设置到消息中，保存修改
            message.setContent(mm);
            message.saveChanges();

            //6、发送邮件
            transport.sendMessage(message, message.getAllRecipients());
            //关闭资源
            transport.close();

        } catch (GeneralSecurityException | MessagingException e) {
            e.printStackTrace();
        }
        return "OK";
    }
}
